package com.kancy.vip.pattern.singleton.threadlocal;

/**
 * 天然的线程级别的线程安全
 * 同一个线程，获取的Object始终是同一个对象
 *
 * 实现原理：
 *      ThreadLocal对象中有一个ThreadLocalMap集合，key = 当前线程， value = ThreadLocal副本对象
 *      所以每一个线程，都有自己的ThreadLocal对象副本
 */
public class ThreadLocalSingleton {
    private static final ThreadLocal<Object> threadlocal = new ThreadLocal(){
        @Override
        protected Object initialValue() {
            return new Object();
        }
    };

    /**
     *
     * @return
     */
    public static Object getInstance(){
        return threadlocal.get();
    }
}
